let array=[]
let title=[]
let hjTitle = []//合并列
let tableColumns = []//数据列
let mergesNumbers = []//合并列数组
//列配置，支持普通列 + 合并列（dataType:'merge'）
$this.tableColumns.forEach((d, index) => {
    alert("join 1.0")
    if (d.dataType == 'merge'){
        for (let i = 0; i < d.subset.length; i++) {
            //添加一级菜单
            if (i == 0){
                alert("join 1")
                hjTitle.push(d.title)
                alert("合并列 = ",d.title)
            }else{
                hjTitle.push("")
            }
        }
    }
    else{
        alert("join 2.0")
        if(d.dataIndex){ //数据字段
            alert("join 2")
            hjTitle.push("")
        }
        tableColumns.push(d)
    }
})
array.push(hjTitle)
//多级菜单  导出数据的 title
$this.tableColumns.forEach(d => {
    if (d.dataType == 'merge'){
        columnProcessing(d.subset)
    }else{
        if(d.dataIndex){
            title.push(d.title)
        }
    }
})
//处理合计列标题
function columnProcessing (columns){
    let bagin = 0
    let end = 0
    columns.forEach((c,cindex) => {
        //与 tableColumns 一一对应，但顺序可能不同，用来找索引
        $this.columns.forEach((d,dindex) => {
            if (c == d.dataIndex){
                if (cindex==0){
                    bagin = dindex
                }else if (cindex == columns.length-1){
                    end = dindex
                }
                title.push(d.title)
                alert("join 3.0",d.title)
                let columnsCopy = JSON.parse(JSON.stringify(d))
                if ($this.dataIndexs[d["dataIndex"]]){
                    columnsCopy["dataIndex"] = $this.dataIndexs[d["dataIndex"]]
                }
                tableColumns.push(columnsCopy)
            }
        })
    })
    mergesNumbers.push({ s: { r: 0, c: bagin }, e: { r: 0, c: end } })//合并列
}

//合并列和数据列没对齐
array.push(title)
// 导出的数据（根据实际情况修正）       // data(全部数据)(tips:数据源【后端分页】的只能data=当前数据，需要导出全部数据需要自己编写脚本和接口，脚本参考wind/table.Vue的makeRequest函数，接口参考/wind/exportAll/{menuCode})      // sData（筛选数据）      // tableData（动态数据）
// 当前页或全部数据
$this.tableData.forEach(d => {
    let row=[]
    tableColumns.forEach(c => {
        if(c.dataIndex){
            if(c.customRenderContent){  //  自定义渲染需要自行处理数据
                let temp = d[c.dataIndex] // 未进行处理的数据
                // 请在这里键入代码 !
                //c.dataIndex 列名
                if(c.dataIndex === "选择分包申请") {
                    let tmp = temp === 17 ? "否" : "是";
                    row.push(tmp)
                }else{
                    row.push(temp)
                }
                // row.push(temp)
            }else{
                let temp = ''
                if (c.dataType=='number'){
                    temp = d[c.dataIndex]? $this.dataProcessing(c,JSON.parse(JSON.stringify(d[c.dataIndex]))):'0'
                }else{
                    temp = d[c.dataIndex]? $this.dataProcessing(c,JSON.parse(JSON.stringify(d[c.dataIndex]))):''
                }
                if(c.dataType=='number'&&c.percentage)  temp = temp+"%" //  进度条加上%
                row.push(temp)
            }
        }
    })
    array.push(row)
})
exportSheet($this.XLSX, array,$this.report.reportName,mergesNumbers)

function exportSheet(XLSX, sheet, sheetname,mergesNumbers){
    if (!sheetname) sheetname = 'sheet1';
    if (Array.isArray(sheet)) sheet = XLSX.utils.aoa_to_sheet(sheet);
    sheetname = sheetname.replace(/[/\\:*?"<>|]/g, '-')
    // 合并单元格
    sheet["!merges"] = mergesNumbers;


    let workbook = {SheetNames: [sheetname], Sheets: {}};
    workbook.Sheets[sheetname] = sheet;
    XLSX.writeFile(workbook, sheetname + '.xlsx');
}